//给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数 。
// 子数组是数组中元素的连续非空序列。
// 示例 1：
//输入：nums = [1,1,1], k = 2
//输出：2
// 示例 2：
//输入：nums = [1,2,3], k = 3
//输出：2
// 提示：
// 1 <= nums.length <= 2 * 10⁴
// -1000 <= nums[i] <= 1000
// -10⁷ <= k <= 10⁷
// Related Topics 数组 哈希表 前缀和 👍 2619 👎 0

public class test560 {
    public int subarraySum(int[] nums, int k) {
        int ans = 0;
        for (int i = 0; i < nums.length; i++) {
            int sum = nums[i], j = i + 1;
            if (sum == k) {
                ans++;
            }
            while (j < nums.length) {
                sum += nums[j];
                if (sum == k) {
                    ans++;
                }
                j++;
            }
        }
        return ans;
    }

    public static void main(String[] args) {
        //System.out.println( new test560().subarraySum(new int[]{1,1,1}, 2));//2
        //System.out.println(new test560().subarraySum(new int[]{1, 2, 3}, 3));//2

        System.out.println(new test560().subarraySum(new int[]{1, -1, 0}, 0));//3
        System.out.println(new test560().subarraySum(new int[]{0, 0}, 0));//3
    }
}
